/**
getOwnPropertyNames	
getOwnPropertyDescriptors	
getOwnPropertySymbols	
keys	values	 entries	
*/
//let obj = {a:1 }//可枚举的属性
//Object.defineProperty(obj,'b',{value:2,enumerable:false})//不可枚举属性
//obj.__proto__.c = 3;//在原型上定义属性
//Object.defineProperty(obj,Symbol('d'),{value:4,enumerable:true})
//console.log(Object.keys(obj));//['a']
//console.log(Object.values(obj));//[1]
//console.log(Object.entries(obj));//[['a',1]]

//console.log(Object.getOwnPropertyNames(obj));//[ 'a', 'b' ] 获取自己的属性，不管可不可以枚举都可以获取
//console.log(Object.getOwnPropertyDescriptors(obj)); //[a,b,symbol(d)] 包括symbol
//console.log(Object.getOwnPropertySymbols(obj))//[Symbol(d)]
let obj = {a:1 }
obj.__proto__.c = 3;
//console.log(obj.c)
for(let key in obj){
    //if(obj.hasOwnProperty(key)){
        console.log(key)
    //}
}